package pl.edu.pk.psb.assembler;

import java.text.ParseException;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import pl.edu.pk.psb.bc.bo.WydarzenieBo;
import pl.edu.pk.psb.bc.dto.WydarzenieDto;
import pl.edu.pk.psb.bc.util.DataUtil;
import pl.edu.pk.psb.command.WydarzenieCommand;


@Component
public class WydarzenieCommandAssembler {

	@Autowired
	AdresCommandAssembler adresCommandAssembler;
	
	@Autowired
	SalaCommandAssembler salaAssembler;
	
	@Autowired
	WydarzenieBo wydarzenieBo;

	public WydarzenieDto konwertuj(WydarzenieCommand cmd) {
		WydarzenieDto dto = new WydarzenieDto();
		dto.setNazwa(cmd.getNazwa());
		dto.setOpis(cmd.getOpis());
		dto.setSciezkaObrazu(cmd.getSciezkaObrazu());
		try {
			dto.setData(DataUtil.parsujNaDate(cmd.getData()));
		} catch (ParseException e) {
			e.printStackTrace();
		}
		dto.setAdres(adresCommandAssembler.konwertuj(cmd.getAdres()));
		dto.setCenaNormalna(Float.parseFloat(cmd.getCenaNormalna()));
		if (StringUtils.isNotBlank(cmd.getCenaUlgowa())) {
			dto.setCenaUlgowa(Float.parseFloat(cmd.getCenaUlgowa()));
		}
		dto.setKategoria(wydarzenieBo.pobierzKategorie(cmd.getKategoria()));
		if (cmd.isCzyJestSala()) {
			dto.setSala(salaAssembler.stworzNowaSaleZCommanda(cmd));
		} else {
			int iloscMiejsc = Integer.parseInt(cmd.getIloscMiejsc());
			dto.setWszystkichMiejsc(iloscMiejsc);
			dto.setDostepnychMiejsc(iloscMiejsc);
		}

		return dto;
	}
}